
#import "UIController.h"

@implementation UIController

- (id) init
{
	[super init];
	
	/* This is the list of supported exhibits */
	exhibits = [NSArray arrayWithObjects: 
				[[Plasma alloc] init],
				[[Fur alloc] init],
				[[RayTracer alloc] init],
				[[Life alloc] init],

				[[BrickShader alloc] init],
//				[[Toyball alloc] init],

				[[Bumpmap alloc] init],
				[[Earth alloc] init],
				[[Wobble alloc] init],

				[[Cloud1 alloc] init],
				[[Cloud2 alloc] init],
				[[Fire alloc] init],
				[[Inferno alloc] init],
				[[Marble alloc] init],
				[[Granite alloc] init],
				[[Eroded alloc] init],
				[[Wood1 alloc] init],
				[[Wood2 alloc] init],
				[[WoodShader alloc] init],

				[[EnvMap alloc] init],
				[[Glass alloc] init],
				[[HeatHaze alloc] init],

				[[Mandelbrot alloc] init],
				[[Julia alloc] init],

				[[ParticleSimple alloc] init],
				[[ParticleFountain alloc] init],
				[[ParticleWave alloc] init],

				[[VertexNoise alloc] init],
				[[Skinning alloc] init],
				[[SphereMorph alloc] init],
				[[TorusMorph alloc] init],

				[[Lattice alloc] init],
				[[Polkadot3D alloc] init],
				[[Toon alloc] init],
				[[Gooch alloc] init],

//				[[BlobbyCloud alloc] init],
//				[[Bubbles alloc] init],

//				[[EmulateFFFS alloc] init],
//				[[EmulateFFVS alloc] init],
//				[[GlyphBomb alloc] init],
//				[[StarBomb alloc] init],
//				[[TextureBomb alloc] init],
//				[[DigitalClock alloc] init],

				nil];
	
	[exhibits retain];
	
	return self;
}

- (void) dealloc
{
	[exhibits release];
		
	[super dealloc];
}

- (void) awakeFromNib
{
	Exhibit *exhibit;
	
	exhibit = [exhibits objectAtIndex: 0];
	
	[openglview setExhibit: exhibit];
	[text_view  readRTFDFromFile: [exhibit descriptionFilename]];
}

/* Following methods are for compliency with the NSTableDataSource protocol */
- (int) numberOfRowsInTableView: (NSTableView *) aTableView
{
	return [exhibits count];
}

- (id) tableView: (NSTableView *) aTableView
       objectValueForTableColumn: (NSTableColumn *) aTableColumn                                                                 
       row: (int) rowIndex
{
	return [[exhibits objectAtIndex: rowIndex]name];
}

- (void) tableViewSelectionDidChange: (NSNotification *) aNotification
{
	
	unsigned int rowindex;
	Exhibit  *exhibit;
	
   /* Get the symbol that was selected */
   rowindex = [table_view selectedRow];
   if ((rowindex < 0) || (rowindex >= [exhibits count]))
      return;
	exhibit = [exhibits objectAtIndex: rowindex];
	
	[openglview setExhibit: exhibit];
		
	if ([exhibit descriptionFilename])
		[text_view readRTFDFromFile: [exhibit descriptionFilename]];
	else
		[text_view setString: @""];
}

@end
